﻿#ifndef __GAF_SYSINCDEF_LINUX_H__
#define __GAF_SYSINCDEF_LINUX_H__

#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <memory.h>
#include <iostream>
#include <fstream>

#include <string>
#include <vector>
#include <map>

// 类型
#define _STRING			        std::string
#define _VECTOR			        std::vector
#define _MAP			        std::map

// 数据流类型
#define _FSTREAM		        std::fstream
#define _IFSTREAM		        std::ifstream
#define _OFSTREAM		        std::ofstream

// 控制台输出操作
#define _COUT			        std::cout
#define _CIN			        std::cin
#define _ENDL			        std::endl

// 控制台输出操作
#define _PRINTF			        printf
#define _SPRINTF		        sprintf
#define _VSNPRINTF		        vsnprintf

// 内存操作
#define _MALLOC			        malloc
#define _FREE			        free
#define _MEMSET			        memset
#define _MEMCMP			        memcmp
#define _MEMCPY			        memcpy
#define _MEMMOVE		        memmove

// char字符串操作
#define _STRCPY			        strcpy
#define _STRCAT			        strcat
#define _STRCMP			        strcmp
#define _STRLEN			        strlen

// 可变参数操作
#define	_VA_LIST__			va_list
#define _VA_START			va_start
#define _VA_ARG				va_arg
#define _VA_END				va_end

// 文件目录系统操作
#define _FS_KIND_DIR			DT_DIR
#define _FS_KIND_FILE			DT_REG
#define _FS_DIR_ERROR			NULL
#define _FS_DIR				DIR*
#define _FS_DATA			struct dirent*
#define _FS_OPEN(_szPath, _DIR, _DATA)	((NULL == (_DIR = opendir(_szPath)) ? NULL : \
					(NULL == (_DATA = readdir(_DIR)) ? _DIR : _DIR)
#define _FS_READ(_DIR, _DATA)		(_DATA = readdir(_DIR))
#define _FS_CLOSE(_DIR)			closedir(_DIR)

#define _FS_DATA_NAME(_DATA, _strName)	_DATA->d_name
#define _FS_DATA_SIZE(_DATA, _nSize)	_DATA->d_size
#define _FS_DATA_ISKIND(_DATE, _KIND)	((_DATA->d_type == _KIND) ? true : false)


#endif
